Xception--Deep Learning with Depthwise Separable Convolutios

将学习过程:spatial相关性和channel相关性分开,提出Depthwise Separable Convolutios,设计了新的结构Xception

介绍

文章链接

常规卷积网络是CONV->POOL形式。通过CONV学习特征,通过POOL下采样,使网络在不同尺度空间都能提取特征。

Inception结构最初在GoogLeNet出现(Inception V1),随后有了Inception V2、Inception V3和Inception-ResNet。

Inception-style的结构有很多版本,下面是Inception V3版本中的结构:
xception_01.jpg
Inception模型,是由连续多个Inception结构组成,就行VGG-style网络一样,由连续多个卷积组成。

Inception模型和卷积在概念上类似,都是卷积提取特征;但是Inception结构参数更少,提取的特征更加丰富。Inception结构工作原理是什么,和常规卷积有什么不同?Inception之后,设计网络的侧脸又是什么?

Inception假设

一个卷积层的卷积核是三个维度的,空间上width和height,还有一个channel维度。因此一个卷积层,既考虑映射cross-channel相关性,又考虑spatial相关性。

Inception背后的思想是通过分开独立处理cross-channel和spatial的相关性,使得处理过程更加简单高效。准确来说,Inception结构首先通过1x1卷积“看”cross-channel相关性,把输入映射到3或4个分开的空间(小于原输入空间),之后通过3x3或5x5卷积再映射到更小的3维空间,如上图所示。实际上,Inception基本的假设就是通过解耦和cross-channel和spatial相关性。

是否可以进一步假设cross-channel和spatial之间的相关性可以完全分开处理?

卷积和separable卷积之间的连续

基于上面进一步假设,有了“extreme”笨笨的Inception结构:
xception_02.jpg

上面这种结构,几乎等同于depthwise separable卷积。depthwise separable卷积又叫做“separable卷积”,是通过处理每一个channel上的空间卷积,之后再经过pointwise卷积(例如1x1卷积),在一个新的channel空间得到输出。

“extreme”版本的Inception和depthwise separable卷积两点主要不同:

  • 操作顺序:depthwise separable卷积首先channel-wise spatial卷积,之后1x1卷积;而Inception首先1x1卷积。

  • 第一个操作后是否有非线性。Inception中,第一步和第二部操作都有非线性(ReLU);而depthwise separable卷积后面通常没有非线性操作。

上面两点不同种,第一点不同不太重要,第二点不同比较重要。

输入的每一个channel空间(width和height)对应一个“频谱”。1x1卷积把这些“频谱”合成一个;而depthwise separable卷积对每一个“频谱”做卷积。Inception结构把几百个channel分成3或4个。

基于以上观察,可以把Inception结构替换为depthwise separable卷积。

Xception结构

基于cross-channel和spatial相关性可以完全解耦和,作者提出一个新的卷积网络结构。这个假设是基于Inception结构的强假设,名字叫做“Extreme Inception”,简称“Xception”。结构如下:
xception_03.jpg

Xception有36个卷积层,包含14个模块,线性Residual connection在这14个模块中。在图像分类中,最后一层是逻辑回归;可以在逻辑回归前面一层加上全连接层。

实验评估

对比Xception和Inception V3,因为它们两个参数个数接近。对比它们在图片分类上的效果。数据集一个是单标签的ImageNet,另一个是多标签的JFT。

优化方法配置

  • On ImageNet:
    – Optimizer: SGD
    – Momentum: 0.9
    – Initial learning rate: 0.045
    – Learning rate decay: decay of rate 0.94 every 2 epochs

  • On JFT:
    – Optimizer: RMSprop
    – Momentum: 0.9
    – Initial learning rate: 0.001
    – Learning rate decay: decay of rate 0.9 every 3,000,000 samples

正则化

  • Weight decay
    Inception V3使用L2正则化,weight decay rate为4e-5(在ImageNet上tune得到的)。Xception使用1e-5。

  • Dropout
    在逻辑回归前加上dropout层,dropout rate为0.5.

  • Auxiliary loss tower

Inception V3包含一个可选的auxiliary tower,在反向传播时当做正则化机制。为了简化,Xception没有包含。

训练工具

使用TensorFlow,60块NVIDIA K80 GPUs。

ImageNet使用同步梯度下降,训练了3天。

JFT使用异步梯度下降,训练了近一个月,并没有完全收敛。

和Inception V3对比

分类对比

ImageNet,使用validation set。Single model, single crop。
xception_04.jpg

JFT对比,使用模型为迭代30,000,000次的模型:

xception_05.jpg

Xception架构在JFT数据集性能提升明显高于在ImageNet数据集。可能是因为Inception V3设计时专注于ImageNet。

模型大小和速度

使用K80 GPU,同步梯度下降。

xception_06.jpg
两个模型参数个数类似。Xception速度稍慢于Inception V3。未来需要在depthwise卷积上做些优化。

residual connections影响

xception_07.jpg

Residual connection对收敛速度和精度都有帮助。需要注意,两者训练时都是用同一配置,对于不使用residual connection,调优配置可能得到更好的效果。

pointwise卷积后中间激活的影响

在depthwise和pointwise卷积之间使用不同激活函数
xception_08.jpg

上面结果,不使用非线性激活性能好于使用非线性激活。这和《Rethinking the inception architecture for computer vision》结论相反。这可能和特征空间深度相关:对于深的特征空间(Inception中的),非线性有帮助;对于浅的(例如depthwise卷积,1-channel特征空间)反而有负面作用。

文章目录
  1. 1. 介绍
    1. 1.1. Inception假设
  2. 2. 卷积和separable卷积之间的连续
  3. 3. Xception结构
  4. 4. 实验评估
    1. 4.1. 优化方法配置
    2. 4.2. 正则化
    3. 4.3. 训练工具
    4. 4.4. 和Inception V3对比
      1. 4.4.1. 分类对比
    5. 4.5. 模型大小和速度
    6. 4.6. residual connections影响
    7. 4.7. pointwise卷积后中间激活的影响
,
#add by kangyabing